//引入gulp模块
var gulp = require('gulp');
//引入路径模块
var path=require("path");
//引入Less插件模块
var less =require('gulp-less');
//引入sass插件模块
var sass =require('gulp-sass');
//引入压缩JS插件模块
var uglify =require('gulp-uglify');
//引入压缩css模块
var cleanCss = require('gulp-clean-css');
//引入压缩重命名插件模块
var rename =require('gulp-rename');
//引入资源地图模块
var sourcemaps = require('gulp-sourcemaps');
//引入热刷新模块
var liveReload = require('gulp-livereload');
//引入串行任务管理模块
var sequence=require("run-sequence");
//引入删除模块
var del=require("del");
//编译+压缩
gulp.task('myless',()=>{
    //设置源文件的路径,*为匹配所有less文件
    gulp.src("./src/less/*.less")
    .pipe(sourcemaps.init())
    //调用插件的方法编译less
    .pipe(less({
        paths: [ path.join(__dirname, 'less', 'includes') ]
    }))
    .pipe(sourcemaps.write("./maps"))
    //	.pipe(cleanCss()) //调用插件的方法去压缩CSS文件
    //	.pipe(rename({
    //		suffix:".min"
    //	}))
    // 设置输出文件夹
    .pipe(gulp.dest("./dest/css/"))
    .pipe(liveReload())

});
gulp.task('mysass',()=>{
    //设置源文件的路径,*为匹配所有less文件
    gulp.src("./src/sass/*.scss")
        .pipe(sourcemaps.init())
        //调用插件的方法编译sass
        .pipe(sass().on('error', sass.logError))
        .pipe(sourcemaps.write("./maps"))
        //	.pipe(cleanCss()) //调用插件的方法去压缩CSS文件
        //	.pipe(rename({
        //		suffix:".min"
        //	}))
        // 设置输出文件夹
        .pipe(gulp.dest("./dest/css/"))
        .pipe(liveReload())
});
//压缩css
gulp.task('compressCss',['myless'],()=>{
    gulp.src("./dest/css/*.css") //设置源文件的路径
    .pipe(cleanCss()) //调用插件的方法去压缩CSS文件
    .pipe(rename({
        suffix:".min"
    }))
    .pipe(gulp.dest("./dest/css/"));
    //设置输出文件夹
    // 调用热刷新方法


});
//压缩js
gulp.task("compressJs",()=>{
    // * 匹配任意数量的字符
    gulp.src("./src/js/*.js") //设置源文件的路径
    .pipe(uglify()) //调用插件的方法去压缩js文件
    .pipe(rename({
        suffix:".min"
    }))
    //设置输出文件夹
    .pipe(gulp.dest("./dest/js/"))
});

//定义观察者任务
gulp.task("watch",function () {
    liveReload.listen(); //开启监听
    gulp.watch("./src/*/*",["myless","mysass"]); //观察者，less变化就执行less编译
});

//清除垃圾文件
gulp.task("mydel",function () {
    del("./dest/temp")
});

//串行
gulp.task("default",function () {
    sequence("myless","compressCss");
});

